package com.nidu.demo.redis.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * Redis配置属性类
 *
 * @author nidu
 */
@Data
@ConfigurationProperties(prefix = "cola.redis")
public class RedisProperties {

    /**
     * 是否启用Redis模块
     */
    private Boolean enabled = true;

    /**
     * Redis键前缀
     */
    private String keyPrefix = "cola:";

    /**
     * 分布式锁配置
     */
    private Lock lock = new Lock();

    /**
     * 数据存储配置
     */
    private Storage storage = new Storage();

    @Data
    public static class Lock {
        /**
         * 分布式锁键前缀
         */
        private String keyPrefix = "lock:";

        /**
         * 默认锁过期时间（毫秒）
         */
        private Long defaultExpireTime = 30000L;

        /**
         * 默认重试间隔（毫秒）
         */
        private Long retryInterval = 100L;

        /**
         * 默认重试次数
         */
        private Integer retryCount = 3;
    }

    @Data
    public static class Storage {
        /**
         * 数据存储键前缀
         */
        private String keyPrefix = "data:";

        /**
         * 默认过期时间（秒）
         */
        private Long defaultExpireTime = 7200L;
    }
}
